1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 import random
 4 import numpy as np
 5 import matplotlib.pyplot as plt
 6 from matplotlib import mlab
 7 from matplotlib import rcParams
 8 
 9 
10 # 初始参数设置
11 Box_sum =500         # 箱子中剩余硬币数量，初始值
12 People_Flag= random.randint(1,10)       # flag 模拟人们取硬币或放硬币的概率 1~10 
13 Threshold = 3.5        #  阈值，可调： 1~Threshold 为取硬币，Threshold+1 ~10 为放硬币
14 Max_TakeCoin=3       #  最多可取硬币数量
15 Max_DonateCoin=2     #  最多可放硬币数量
16 
17 delata=0                # 取、放硬币数量
18 Box_per_remain= [500]   # 每次箱子中硬币余额，list
19 
20 
21 # 算法模拟
22 for x in range(1,5000):  # 循环次数表示参与人数
23     flag= random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率
24     if flag > Threshold:
25         # 放硬币
26         delta=random.randint(1,Max_DonateCoin)
27         delta=random.randint(1,delta)          # 模拟了人们捐款可能性，有偏少的倾向
28         Box_sum =Box_sum + delta
29         Box_per_remain.append(Box_sum)
30     else:
31         # 取硬币
32         delta=random.randint(1,Max_TakeCoin)
33         delta=random.randint(delta,Max_TakeCoin) # 模拟了人 取硬币的可能性，偏多的倾向
34         if Box_sum < delta:
35             Box_sum =0                           # 如果不够取，则取光
36         else:
37             Box_sum =Box_sum - delta
38         Box_per_remain.append(Box_sum)
39  
40 print(Box_per_remain)
41  
42  
43 # 绘图区
44 fig = plt.figure()
45  
46 ## 1. 标题、X、Y 轴 label
47 plt.title('Subway testing')
48 plt.xlabel('Time')
49 plt.ylabel('Money remained')
50  
51 x= np.arange(len(Box_per_remain))
52  
53 ## 2. data
54  
55 plt.plot(x,Box_per_remain,color='r')
56 plt.bar(x,Box_per_remain,alpha=.5,color='g')
57  
58 plt.show()
